package com.ztesoft.huangfu.learning.springboot.springbootschedule.task;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created with IntelliJ IDEA.
 * Author: huangfu.daohui
 * Date: 2018/5/27
 * Time: 21:35
 * Version: 1.0
 * Description:下面是常见的两种方式:cron和fixedRate
 * 第一位，表示秒，取值0-59
 * 第二位，表示分，取值0-59
 * 第三位，表示小时，取值0-23
 * 第四位，日期天/日，取值1-31
 * 第五位，日期月份，取值1-12
 * 第六位，星期，取值1-7，1表示星期天，2表示星期一
 * 第七位，年份，可以留空，取值1970-2099
 * 项目启动执行
 **/
@Component
public class ScheduleTask {

    private int count = 0;
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    // 每6s执行一次
    @Scheduled(cron = "*/6 * * * * ?")
    private void process() {
        System.out.println("this is scheduler task runing  " + (count++));
    }

    //@Scheduled(fixedRate = 6000) ：上一次开始执行时间点之后6秒再执行
    //@Scheduled(fixedDelay = 6000) ：上一次执行完毕时间点之后6秒再执行
    //@Scheduled(initialDelay=1000, fixedRate=6000) ：第一次延迟1秒后执行，之后按fixedRate的规则每6秒执
    @Scheduled(fixedRate = 6000)
    public void reportCurrentTime() {
        System.out.println("现在时间：" + dateFormat.format(new Date()));
    }

    //每天19点50分50秒时执行
    @Scheduled(cron = "50 50 19 * * ?")
    public void timerCron() {
        System.out.println("current time : " + dateFormat.format(new Date()));
    }
}
